Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Cache-Control</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Cache-Control"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Cache-Control rootpage-Cache-Control skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Cache-Control</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr">
<p>En informatique, le <b>Cache-Control</b> est un en-tête du protocole <a href="HTTP" class="mw-redirect" title="HTTP">HTTP</a> concernant la <a href="M%C3%A9moire_cache" title="Mémoire cache">mémoire cache</a>.
En effet la plupart des <a href="Navigateur_web" title="Navigateur web">navigateurs web</a> utilisent un espace réservé sur le disque dur pour enregistrer
une copie des pages qui sont visitées (souvent). Ainsi quand l'utilisateur demande une page, le navigateur
affiche parfois simplement la copie qu'il avait, pour gagner du temps. Le bouton recharger (actualiser, rafraîchir) des
navigateurs permet de la mettre à jour.
</p><p>Le Cache-Control peut être défini soit par le <a href="Serveur_web" title="Serveur web">serveur web</a>, soit par un <a href=".htaccess" title=".htaccess">.htaccess</a>, ou encore selon les pages web par les sites en <a href="Common_Gateway_Interface" title="Common Gateway Interface">CGI</a>, <a href="PHP" title="PHP">PHP</a>, <a href="Active_Server_Pages" title="Active Server Pages">ASP</a><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>.
</p>

<div class="mw-heading mw-heading2"><h2 id="HTTP/1.0"><span id="HTTP.2F1.0"></span>HTTP/1.0</h2></div>
<p>À ce niveau du <a href="Protocole_de_communication" title="Protocole de communication">protocole</a>, il ne permet qu'un contrôle du cache rudimentaire.
</p>
<div class="mw-heading mw-heading3"><h3 id="Pragma:_no-cache">Pragma: no-cache</h3></div>
<p>Permet au navigateur d'indiquer au cache de récupérer le document auprès du serveur d'origine plutôt que de lui renvoyer celui qu'il conserve.
</p>
<div class="mw-heading mw-heading2"><h2 id="HTTP/1.1"><span id="HTTP.2F1.1"></span>HTTP/1.1</h2></div>
<p>À ce niveau du <a href="Protocole_de_communication" title="Protocole de communication">protocole</a>, l'en-tête Cache-Control offre plus de possibilités. Le navigateur ou le serveur peuvent donner des directives à un cache.
</p><p>L'en-tête Cache-Control a pour valeur une liste de directives, séparées par des virgules. La spécification HTTP/1.1 dans <abbr class="abbr" title="Request for comments" lang="en">RFC</abbr>&nbsp;2616<sup id="cite_ref-RFC-2616_2-0" class="reference"><a href="#cite_note-RFC-2616-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> définit plusieurs valeurs pour l'en-tête Cache-Control. Certaines sont très peu utilisées.
</p>
<div class="mw-heading mw-heading3"><h3 id="public">public</h3></div>
<p>La réponse HTTP peut être mise en cache par n'importe quel cache. Un client ou un serveur proxy peuvent mettre en cache par exemple la réponse. Cela permet le partage de contenu à travers les utilisateurs qui utilisent le même serveur proxy.
</p><p>Par exemple, si un document est renvoyé après authentification de l'utilisateur par le serveur et que cette authentification n'est destinée qu'à faire des statistiques et non un contrôle d'accès, le document peut être considéré comme public.
</p>
<div class="mw-heading mw-heading3"><h3 id="private">private</h3></div>
<p>Le message de réponse est destiné à un client unique et ne doit pas être mis en cache par un cache partagé. Un serveur proxy ne doit pas mettre en cache la réponse bien qu'un client puisse le faire. Cela permet au client de tenir à jour une version mise en mémoire cache pendant que tous les clients qui utilisent le même serveur proxy conservent les versions différentes mises en mémoire cache.
</p>
<div class="mw-heading mw-heading3"><h3 id="no-cache">no-cache</h3></div>
<p>Cela vous permet de spécifier que la requête suivante pour le même contenu devra obligatoirement être validée par le serveur. Ceci rend l'entrée dans le cache directement périmée<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>.
</p><p><code>Cache-Control: no-cache</code>
</p>
<div class="mw-heading mw-heading3"><h3 id="no-store">no-store</h3></div>
<p>Empêche le stockage non volatil (par exemple&nbsp;: sur disque) de la donnée.
</p>
<div class="mw-heading mw-heading3"><h3 id="no-transform">no-transform</h3></div>
<p>La directive no-transform indique aux proxies et autres systèmes de cache qu'ils ne doivent pas transformer le corps du message qu'ils reçoivent.
</p><p>Elle est par exemple prise en compte par le proxy transparent de ByteMobile, utilisé par de nombreux opérateurs mobiles tels que <a href="Soci%C3%A9t%C3%A9_fran%C3%A7aise_du_radiot%C3%A9l%C3%A9phone" class="mw-redirect" title="Société française du radiotéléphone">SFR</a> ou <a href="Vodafone" title="Vodafone">Vodafone</a>, pour leurs accès <a href="3G" title="3G">3G</a>. Ce proxy effectue diverses modifications sur les pages web, comme l'ajout de certains headers HTTP pouvant modifier le comportement du cache du navigateur, la suppression des retours à la ligne dans le code source, ou encore l'injection d'un code <a href="JavaScript" title="JavaScript">JavaScript</a> destiné à augmenter la compression des images<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="max-age">max-age</h3></div>
<p>Cette directive permet à un serveur de fixer la durée maximale de rétention. Lorsqu'elle est utilisée par un client, elle indique au(x) cache(s) la fraîcheur minimale souhaitée. Les durées sont indiquées en secondes.
</p><p><code>Cache-Control: max-age=600</code>
</p><p>Lorsque cette directive est présente dans la requête d'un client, le cache doit renvoyer un document qui a été produit il y a au plus 10 minutes (en-tête <code>Date</code>). Si le cache possède une réponse plus ancienne, il est censé contacter le serveur d'origine pour obtenir une version plus récente (s'il ne le fait pas, le cache doit obligatoirement inclure un avertissement dans la réponse). Si cette directive apparaît dans la réponse d'un serveur, elle autorise le(s) cache(s) à servir cette même réponse pendant 10 minutes maximum.
</p><p>Dans une réponse, la directive <code>max-age</code> outrepasse l'en-tête <code>Expires</code>.
</p><p>Une valeur définie à 0 indique que la cible devrait être rechargée à chaque accès. Cette notion est proche mais non équivalente à la valeur <code>no-cache</code> qui, elle, oblige la création du fichier à chaque accès sans laisser de place au choix du navigateur.
</p>
<div class="mw-heading mw-heading3"><h3 id="max-stale">max-stale</h3></div>
<p>La directive <code>max-stale</code> permet à un client d'autoriser le(s) cache(s) à renvoyer une réponse périmée, tout en fixant une limite à cette péremption.
</p><p>Par exemple, un client peut accepter une réponse périmée depuis une heure maximum&nbsp;:
</p><p><code>Cache-Control: max-stale=3600</code>
</p><p>Si le cache possède une réponse dont la fraîcheur dépasse les limites fixées par le serveur, il pourra quand même la servir. À condition qu'elle soit périmée depuis moins d'une heure. Sinon, il contacte le serveur d'origine pour obtenir une réponse de fraîcheur convenable.
</p><p>À la limite, indiquer une durée maximale de péremption nulle ne sert à rien.
</p><p><code>Cache-Control: max-stale=0</code>
</p><p>Car cela revient à autoriser les réponses périmées, mais seulement si elles le sont depuis moins de zéro seconde&nbsp;! Aucune réponse ne peut correspondre à ce critère, donc tout se passera exactement comme si le client n'avait rien précisé dans sa requête.
</p>
<div class="mw-heading mw-heading3"><h3 id="min-fresh">min-fresh</h3></div>
<p>La directive <code>min-fresh</code> permet à un client d'exiger une réponse fraîche qui sera valable pendant toute la valeur indiquée.
</p><p>Par exemple, un client peut exiger une réponse fraîche qui sera valable pendant au moins 20 secondes&nbsp;:
</p><p><code>Cache-Control: min-fresh=20</code>
</p>
<div class="mw-heading mw-heading3"><h3 id="min-vers">min-vers</h3></div>
<p>Permet d'indiquer au cache de stocker uniquement des requêtes et des réponses avec des versions HTTP supérieures ou égales à celle spécifiée.
</p>
<div class="mw-heading mw-heading3"><h3 id="must-revalidate">must-revalidate</h3></div>
<p>Force le cache à se reconnecter au serveur avec un If-Modified-Since et doit provoquer une erreur 504<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> si la page a disparu. Si malgré les recommandations, le cache viole cette directive, il doit obligatoirement prévenir l'utilisateur et obtenir son accord pour chaque accès non revalidé.
</p>
<div class="mw-heading mw-heading3"><h3 id="proxy-revalidate">proxy-revalidate</h3></div>
<p>Mécanisme similaire à "must-revalidate", mais s'applique uniquement à des caches de proxy partagés (autres que ceux utilisés par le logiciel client de l'utilisateur). Cela permet de contrôler que l'utilisateur est bien authentifié sur le serveur.
</p>
<div class="mw-heading mw-heading3"><h3 id="only-if-cached">only-if-cached</h3></div>
<p>Si le client s'exécute dans un réseau à faible débit, permet de demander au cache de ne répondre que pour des éléments présents en local, et de retourner une erreur 504 sinon. Des requêtes entre caches locaux avec un bon débit réseau sont possibles.
</p>
<div class="mw-heading mw-heading2"><h2 id="Notes_et_références"><span id="Notes_et_r.C3.A9f.C3.A9rences"></span>Notes et références</h2></div>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a> </span><span class="reference-text"><span class="ouvrage">«&nbsp;<a rel="nofollow" class="external text" href="https://www.mnot.net/cache_docs/index.fr.html"><cite style="font-style:normal;">Un tutoriel de la mise en cache</cite></a>&nbsp;»</span></span>
</li>
<li id="cite_note-RFC-2616-2"><span class="mw-cite-backlink"><a href="#cite_ref-RFC-2616_2-0">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="https://tools.ietf.org/html/rfc2616"><span class="lang-en" lang="en">Request for comments</span> <abbr class="abbr" title="numéro">n<sup>o</sup></abbr>&nbsp;2616</a>
</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a> </span><span class="reference-text"><a href="https://datatracker.ietf.org/doc/html/rfc7234#section-5.2.1.4" class="extiw external" title="rfc:7234">RFC7234 5.2.1.4</a></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="http://stackoverflow.com/questions/4113268/how-to-stop-javascript-injection-from-vodafone-proxy">«&nbsp;<i><span class="lang-en" lang="en">How to stop javascript injection from vodafone proxy?</span></i>&nbsp;»</a> sur <a href="Stack_Overflow" title="Stack Overflow">Stack Overflow</a></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a> </span><span class="reference-text"> <a rel="nofollow" class="external text" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.4">RFC-2616</a></span>
</li>
</ol></div>
<div class="mw-heading mw-heading2"><h2 id="Liens_externes">Liens externes</h2></div>
<ul><li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://tools.ietf.org/html/rfc2616#section-14.9">IETF - RFC 2616 - Section 14.9 Cache-Control</a> - Section 14.9 Cache-Control</li></ul>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de l’informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2022-08-17" href="https://fr.wikipedia.org/wiki/?title=Cache-Control&amp;oldid=196204131">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>